Option Explicit

' Form 初始化
Private Sub UserForm_Initialize()
    ' 初始化时，将区域框的内容设置为当前被选中的区域/单元格的地址
    rangeBox.text = Selection.Address
End Sub

' 生成 json
Private Sub createJsonBtn_Click()
    ' 1. 检查数据数量的输入内容是否合法
    If rangeBox.Value = "" Then
        MsgBox "please enter range of range"
        Exit Sub
    End If

    ' 2. 创建 sql 生成器
    Dim creator As TableDataJsonCreator
    Set creator = createTableDataJsonCreator

    ' 3. 生成 json 数据
    Dim jsonStr As String
    jsonStr = creator.createOneTableJsonStr(ActiveSheet, rangeBox.Value)
                
    ' 4. 写回数据
    resultBox.text = jsonStr
End Sub

Private Function createTableDataJsonCreator() As TableDataJsonCreator
    ' 1. 创建 json 数据生成器
    Set createTableDataJsonCreator = New TableDataJsonCreator

    ' 2. 配置 json 数据生成器
    ' 标识对象属性的物理名称的行号
    createTableDataJsonCreator.fieldPhyNameRowNo = Val(fieldPhyNameRowNoBox.Value)
    ' 标识对象属性的类型名称的行号
    createTableDataJsonCreator.fieldTypeRowNo = Val(fieldTypeRowNoBox.Value)
    ' 标识第一行数据在 table 中的行号
    createTableDataJsonCreator.tableDataStartRowNo = Val(tableDataStartRowNoBox.Value)
End Function

